Published 2004-09-14 22:36:58

I really hate it when I overlook something. This week it was libgda, which is the current backend for DBDO. It was after a few commits by the pecl team to the config.w32 file in cvs. The question came to me.... Could DBDO actually be built on windows?

Unfortunatly after some reseach, the answer was a definate maybe. libgda was designed to be buildable on windows, but no-one has really taken up the gauntlet and run with it. Browsing through the archives, it looks like a few people have tried, but no-one had actually decided to make it their baby. So no dll's or lib's exist for libgda.

This does leave DBDO in a bit of a state of flux.
  • Should I continue on, as on Unix, libgda provides an excellent backend, and builds really easily and quickly. (on the offchance that someone gets passionate about win32 support and spend a few nights figuring out how to build libgda)
  • Should I look at the alternative backends:
    • libdbi - which lacks
      • has no global connection/config cache
      • a schema retreival API
      • a column type to abstract column type API
    • pdo - which lacks
      • has no global connection/config cache
      • a schema retreival API
      • a column type to abstract column type API
    • copy & pasting chunks of libgda (impossible due to the LGPL...), let alone a pain to implement..
To implement the same thing using PDO, would require
  • copying the driver header file (and keeping up with any changes)
  • copying the driver loader code.
  • implementing a config cache.
  • implementing a connection cache.
  • adding schema query and fetchers for all the backends.
  • adding schema type to enum type mappers.
  • enriching the type enum? maybe
It may be worth attempting this by emulating the gda calls, and relaying them through the pdo backends??

On a side note, It became clear earlier that the joinAdd design in DataObjects is probably far better done on the client side, - most of it relates to building the join part based on the links configuration. As far as I can see, this is hardly touches on the special advantages of coding it up in C.


d
Mentioned By:
google.com : php enumeration (83 referals)
google.com : december (59 referals)
google.com : april (55 referals)
google.com : php enum (45 referals)
google.com : DB_Dataobject PDO (17 referals)
google.com : enumeration php (16 referals)
google.com : php enum type (16 referals)
google.com : libgda windows (14 referals)
google.com : db_dataobject alternative (12 referals)
google.com : php enumerator (10 referals)
google.com : php enumerations (8 referals)
google.com : php enumeration type (6 referals)
google.com : db_dataobject windows (5 referals)
google.com : pdo DB_DataObject (5 referals)
google.com : "php enum type" (4 referals)
google.com : enumeration php (4 referals)
google.com : DB_DataObject config (3 referals)
google.com : enum php class (3 referals)
google.com : PHP enum -mysql (3 referals)
google.com : DB_DataObject alternative (2 referals)

Comments

Alan,

too bad about libgda on Windows... :-(
But I guess mapping everything onto PDO and implementing all the things that are missing yourself is probably a bit overkill...

I didn't quite get the last paragraph... what exactly do you mean by doing the joinAdd design on the client side? Does this mean there will still be a PHP class DB_DataObject which does the query building and extends from or uses a class provided by the DBDO extension?

Although I don't think I got this correctly, the thought of still having a pure PHP implementation of DataObject which runs everywhere, but that can be speeded up when compiling the extension (or provide added features as well) is a nice one ;-)

Also, that could solve the Windows problem - stick to libgda, Windows users need to use the pure PHP implementation and live with the lower speed, but at least the application runs.

CU
Markus
#0 - Markus Wolff ( Link) on 2004-09-14 23:44:08 Delete Comment
the other way to do this may be to write a simple libdba compat php layer. So it can call a php class (or classes) to do what dba normally does.
#1 - Alan Knowles ( Link) on 2004-09-15 08:40:36 Delete Comment

Add Your Comment

Follow us on